Kasus

PT. Samba Lababan memproduksi ban motor dan ban sepeda. Proses pembuatan ban motor melalui tiga mesin, yaitu 2 menit mesin 1, 8 menit pada mesin 2 dan 10 menit pada mesin 3. Adapun ban sepeda diprosesnya melalui dua mesin, yaitu 5 menit pada mesin 1 dan 4 menit pada mesin2. Tiap mesin ini dapat dioperasikan 800 menit perhari. Untuk memperoleh keuntungan maksimum, rencananya perusahaan ini akan mengambil keuntungan Rp40.000,00 dari setiap penjualan ban motor dan Rp30.000,00 dari setiap penjualan ban sepeda. Bagaimana pihak perusahaan merencanakan banyak ban motor dan banyak ban sepeda yang akan diproduksinya sehingga keuntungannya maksimum.

Petakan kasus dalam bentuk tabel untuk mempermudah pemodelan matematika:

Produk Mesin 1 Mesin 2 Mesin 3 Laba
Ban Motor 2 menit 8 menit 10 menit 40000
Ban Sepeda 5 menit 4 menit 0 menit 30000
Tersedia 800 menit 800 menit 800 menit ?

Setiap masalah pemrograman linear harus mempunyai constraints/kendala, decision variabel/variabel keputusan dan objective/tujuan.

  • Decision variable
    • Ban Motor = x
    • Ban Sepeda = y
  • Constraint
    • 2x+5y <= 800
    • 8x+4y <= 800
    • 10x+0y <= 800
  • Objective
    • 40000x+30000y

Dengan pulp kita bisa menyelesaikan masalah diatas dengan mudah. Lihat dibawah


In [10]:
import pulp
import solver

ban_sepeda = 'ban sepeda'
ban_motor = 'ban motor'
problem_name = 'Optimasi Laba Penjualan Ban'

# decision variables (variabel keputusan)
x = pulp.LpVariable(ban_motor, lowBound=0, cat='Integer')
y = pulp.LpVariable(ban_sepeda, lowBound=0, cat='Integer')

# objective / fungsi tujuan
maximize = 40000 * x + 20000 * y

# constraints / fungsi kendala
mesin1 = 2 * x + 5 * y <= 800
mesin2 = 8 * x + 4 * y <= 800
mesin3 = 10 * x + 0 * y <= 800

# magics
solver = solver.Solver(problem_name, pulp.LpMaximize)  # init the solver
solver.tujuan(maximize)  # tentukan tujuan yang kita inginkan
solver.kendala(mesin1, mesin2, mesin3)  # tambahkan kendala yang kita buat
solver.hasil(x, y)  # print hasil dari kedua variabel jika kasus diselesaikan


Solusi variabel ban_motor adalah 25.0
Solusi variabel ban_sepeda adalah 150.0

Bisa dilihat nilai optimalnya adalah (25, 150) untuk (x,y)

class solver bisa anda lihat di repository

Catatan

Anda bisa menggunakan pulp bukan hanya untuk menyelesaikan kendala dengan 2 variabel. Pulp mengimplementasi algoritma simplex (revised simplex), contoh diatas adalah contoh kasus sederhana yang hanya melibatkan 2 variabel. Contoh implementasi lebih dari 2 variabel bisa dilihat di repository Mba' (sok kenal) Anna Nocanorova


In [ ]: